[t:/]$ 지식_

spark 자체 모듈 배포

2024/02/24

자체 모듈을 만들어 spark 클러스터에서 돌리려면 몇 가지 까다로운 설정이 있다. 특히 클러스터 설정은 인프라 팀에서 강제하는 것들이 많다.

  1. 빌드는 setup.py bdist_egg 로 시행한다.
  2. 빌드 결과 .egg 를 배포한다.
  3. deploy-mode = cluster 인 경우 신경 쓸 것들이 더 있다. client로 테스트하며 로그를 보자.
  4. yarn logs 로 실패 로그를 보자
  5. --files 에는 egg를 쓰지 않는다.
  6. --py-files 를 --files 에 이어서 쓰고 egg만 쓴다.
  7. os.path 에 py용 캐시 디렉토리를 지정하는 것은 도움이 되지 않는다.
  8. --py-files 에 이어서 다음을 쓴다.
--conf "spark.executorEnv.PTYTHON_EGG_CACHE=/tmp/.python-eggs" \
--conf "spark.driverEnv.PYTHON_EGG_CACHE=/tmp/.python-eggs"

클러스터에서 돌리기 위한 여러 문제들이 있었다.

  1. 파이썬 네이티브 변수들은 알아서 broadcast가 된다. 즉, 클러스터에 잘 복사되어 활용된다.
  2. C로 만들어 파이썬으로 래핑한 모듈은 어렵다. 클러스터의 spark 코드 진입 시 1회 실행하는 방법으로 클러스터에서 객체 생성하라.
  3. 따라서 클러스터에 모듈 배포가 필요하다. 드라이버 초기 코드에서 객체를 생성해서 브로드캐스트 할 수 없다.








[t:/] is not "technology - root". dawnsea, rss